package org.example.array;

public class Subarray_with_the_smallest_length2 {
    public static void main(String[] args) {
        //长度最小的子数组
        //给定一个含有 n 个正整数的数组和一个正整数 target 。
        //找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ，并返回其长度。如果不存在符合条件的子数组，返回 0 。

        //双指针法
        int[] nums = {1,2,3,4,5,6,7,8,9};
        int target = 9;
        int slow = 0;
        int fast = 0;
        int len = nums.length+1;
        int sum = 0;
        while(fast<nums.length) {
            sum +=nums[fast];
            if (sum>=target){
                len = Math.min(len,fast-slow+1);
                sum=0;
                slow++;
                fast = slow-1;
            }
            fast++;
        }
        len = len== nums.length+1 ? 0 : len;
        System.out.println(len);
    }
}
